Astro 给不同的扩展定义各自的 CDN

不要停,继续折腾。

换成 Astro 后成功点燃我喜欢折腾的那股劲,可能是随性惯了吧,前几天很随意地就决定将博客程序换成 Astro,哪怕是真想换,也应该在本地测试一阵子再推送到线上。可自己又是瞎来,赶鸭子般就进行推送了,主打一个任性。

这两天一直在进行修修补补,还别说,当深入了解多一点点后,我是越来越喜欢上 Astro 了。在泡官方文档与 Github 仓库时,总觉得每刻都有新的收获。

今天我就被在 Github 仓库上看到的一则更新说明给吸引住了,

具体更新可查阅:https://github.com/withastro/astro/releases/tag/astro%404.5.0

立马开始了测试模式,我看中的功能是:build.assetsPrefix,大概就是 Astro 可以以文件扩展名来定义该类型的文件使用不一样的 CDN。

虽然我的使用场景是暂时用不到多个 CDN 这样的功能,但是不用没关系,方法要学会。

方法很简单,修改配置文件 astro.config.mjs,添加以下内容:

export default defineConfig({
  // 其他配置项
  // 为了演示效果,添加了两个域名,未定义的扩展则返回博客地址
  build: {
    assetsPrefix: {
      js: 'https://cdn.iamlm.com',
      css: 'https://cdn.iamlm.com',
      png: 'https://img.iamlm.com',
      jpg: 'https://img.iamlm.com',
      jpeg: 'https://img.iamlm.com',
      webp: 'https://img.iamlm.com',
      fallback: 'https://www.iamlm.com'
    }
  }
});

这样子就可以解决在本地测试时使用本地文件,避免防盗链、跨域等问题,然后打包上线时又能将静态文件套上 CDN 进行加速服务。

接下进入又拍云控制台进行设置,正常绑定域名并 CNAME 到又拍云提供的地址上,设置好证书(原来又拍云可以申请 Let’s Encrypt DV SSL 单域名证书,可自动续期,之前我都是一年申请一次,草率了)。因为我对 CDN 的设置也不是很懂,因此我只说一下与此相关的两个设置项。

第一、源站设置;

upyun-231811

第二、跨域,解决 JS 报错;

upyun-232022

老实说,我对这些 CDN 的设置是真不太懂,太多规则了。设置错了又怕被人刷,现在我的又拍云都是停停用用,基本都是测试时才开一下这样子。毕竟现在用的国内服务器,网站的速度还是有保障的。